SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE  Procedure [dbo].[SP_TCMOVI_CAJA_D06]      
/*---------------------------------1----------------------*/      
/*---Empresa              : OFISIS S.A.                --*/      
/*---Cliente              : CASSINELI                  --*/      
/*---Sistema              : Tesoreria                  --*/      
/*---M÷dulo               : Empresa                    --*/      
/*---Programa             : Anulaci¸n                  --*/      
/*---                       Movimiento Caja   (Libre)  --*/      
/*---                       (Egresos)                  --*/      
/*---Script               : tcmovi_c.sql               --*/      
/*---Nombre SP            : SP_TCMOVI_CAJA_D06         --*/      
/*---Desarrollado por     : Javier Flores A.           --*/      
/*---Fecha Creaci÷n       : 13/07/1999                 --*/      
/*---Base Datos           : Microsoft Sql Server       --*/      
/*---Versi÷n              : 6.5                        --*/      
/*---Invoca a SP          :                            --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/        
/*---ModIficado 1 por     :Maribel Julca Rodriguez     --*/        
/*---Fecha ModIficaci,n   :22/01/2005                  --*/         
/*---Detalle ModIficaci,n :ingreso de campos CO_USUA_CREA, CO_USUA_MODI --*/        
/*-------------------------------------------------------*/        
      
/*-------------------------------------------------------*/      
/*---Comentarios                                       --*/      
/*---                                                  --*/      
/*---                                                  --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/      
/*---Drop Proc SP_TCMOVI_CAJA_D06                      --*/      
/*---Grant all on SP_TCMOVI_CAJA_D06 to public         --*/       
/*---SP_TCMOVI_CAJA_D06                                --*/      
/*-------------------------------------------------------*/      
 @ISCO_EMPR TD_VC_002,       
 @ISCO_USUA_MODI TD_VC_008_USUA,      
 @ISCO_CAJA TD_VC_008,       
 @ISAA_CAJA TD_VC_004,       
 @ISMM_CAJA TD_VC_002,       
 @ISTI_MOVI TD_VC_001,        
 @ISNU_COMP_CAJA TD_VC_008,       
 @INIM_MOVI TD_NU_016_004,      
 @ISCO_TIPO_OPER TD_VC_003,      
 @IDFE_ANUL TD_DT_001,      
 @ISDE_OBSE TD_VC_100,      
 @ISNU_SOLI TD_VC_010      
 as      
      
 Declare      
      
 @VSCO_TIPO_EGAN TD_VC_003,         
 @VSST_GEAS_ANUL TD_VC_001,      
 @VSCO_TIPO_OPE1 TD_VC_003,     
  
/* a) Variables de extorno */        
 @VSCO_UNID_CONC TD_VC_003,  --YA      
 @VDFE_OPER  TD_DT_001,      --YA      
 @OSNU_ASTO  TD_VC_010,      --YA      
 @VSCO_TIPO_INAN TD_VC_003,        
 @VSST_INTE_BACH TD_VC_001,  --YA      
 @VSST_ASTO_RESU TD_VC_001,  --YA      
 @VSTI_OPNI_CARG TD_VC_001,  --YA      
 @VSTI_OPNI_ABON TD_VC_001   --YA       
      
 Begin Tran SP_TCMOVI_CAJA_D06      
      
      SELECT @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL,  
             @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER , @VSST_INTE_BACH = ST_INTE_BACH            
      FROM   TMPARA_TESO       
      WHERE  CO_EMPR = @ISCO_EMPR      
      
      If @VSST_GEAS_ANUL = 'N'      
         Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_EGAN      
      Else          
       Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER     
  
-- Se optiene la fecha de operacion para --E X T O R N O--  --       
   Select @VDFE_OPER = FE_OPER,          
          @VSCO_UNID_CONC = CO_UNID_CONC          
   From   TCMOVI_CAJA              
   Where  CO_EMPR = @ISCO_EMPR              
         And    CO_CAJA = @ISCO_CAJA              
         And    AA_CAJA = @ISAA_CAJA              
         And    MM_CAJA = @ISMM_CAJA              
         And    TI_MOVI = @ISTI_MOVI              
         And    NU_COMP_CAJA = @ISNU_COMP_CAJA     
  
-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --       
        
If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )      
    
   Update  TCMOVI_CAJA      
      Set     TI_SITU = 'EXT',       
              CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
              DE_OBSE = @ISDE_OBSE,      
              CO_USUA_MODI = @ISCO_USUA_MODI,      
              FE_USUA_MODI = GETDATE()      
      Where   CO_EMPR = @ISCO_EMPR        
      And     CO_CAJA = @ISCO_CAJA      
      And     AA_CAJA = @ISAA_CAJA      
      And     MM_CAJA = @ISMM_CAJA      
      And     TI_MOVI = @ISTI_MOVI      
      And     NU_COMP_CAJA = @ISNU_COMP_CAJA   
  
   
    Else  
      Update  TCMOVI_CAJA      
      Set     TI_SITU = 'ANU',       
              CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
              DE_OBSE = @ISDE_OBSE,      
              CO_USUA_MODI = @ISCO_USUA_MODI,      
              FE_USUA_MODI = GETDATE()      
      Where   CO_EMPR = @ISCO_EMPR        
      And     CO_CAJA = @ISCO_CAJA      
      And     AA_CAJA = @ISAA_CAJA      
      And     MM_CAJA = @ISMM_CAJA      
      And     TI_MOVI = @ISTI_MOVI      
      And     NU_COMP_CAJA = @ISNU_COMP_CAJA      
      
      If @@error <> 0      
         Begin      
           Rollback Tran      
           Return      
         End      
      
      
    /* Actualizando la Tabla de Solicitudes a Caja a Situaci©n APROBADAS */      
      
    Update TMSOLI_CABA      
    Set TI_SITU = 'APR', FE_LIQU = NULL,       
        CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()               
    Where CO_EMPR = @ISCO_EMPR      
    And   NU_SOLI = @ISNU_SOLI      
      
    If @@error <> 0      
       Begin       
         rollback tran      
         return      
       End     
  
  
/**-----Verifica si se genera asientos Resumidos ------*/             
  Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))                  
  From   TMOPRC_RESU t1 , TDTIPO_OPER t2                  
  Where  t2.CO_EMPR = @ISCO_EMPR And                  
  t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And                  
  t1.CO_EMPR = t2.CO_EMPR And                  
  t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB             
           
 /**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/             
  If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND            
     @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And            
     @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )            
  Begin            
 /*-----Optiene el Numero de Asiento -----*/                
    EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @VSCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT              
    IF (@@ERROR != 0)                  
    Begin              
      RollBack Tran  SP_TTAMAR_NCCA_D01            
      Return              
    End             
           
  End                  
 /**/           
     
      
      Insert into TTCAJA_ANUL (CO_EMPR, CO_CAJA,  AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,       
      CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)      
      Values (@ISCO_EMPR, @ISCO_CAJA,  @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI, @ISNU_COMP_CAJA,       
              @VSCO_TIPO_OPE1,  @IDFE_ANUL, @OSNU_ASTO, 'N',@ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())      
      
      If @@error <> 0      
         Begin      
           Rollback tran      
      Return      
     End      
      
Commit Tran      
      
/*------------------------- Fin ------------------------------*/


GO
